<#-- 变量声明 -->
<#assign
<#-- 源表名 -->
source_tablename = tableValue.tableName
<#-- 目的表名 -->
target_tablename = tableValue.tableName
<#-- 资源库相对路径 -->
resourcelibrary_relativepath = ""
<#-- 时间变量，格式 yyyy/mm/dd HH24:mi:ss -->
create_time = tableValue.createTime
<#-- 源数据库连接名称 -->
source_dbconnname = source.connName
<#-- 目的数据库连接名称 -->
target_dbconnname = target.connName
<#-- 源数据库连接地址 -->
source_dbconnaddr = source.serverAddr
<#-- 目的数据库连接地址 -->
target_dbconnaddr = target.serverAddr
<#-- 源数据库名称 -->
source_dbname = source.name
<#-- 目的数据库名称 -->
target_dbname = target.name
<#-- 源数据库端口号 -->
source_dbport = source.port
<#-- 目的数据库端口号 -->
target_dbport = target.port
<#-- 源数据库用户名 -->
source_dbuser = source.user
<#-- 目的数据库用户名 -->
target_dbuser = target.user
<#-- 源数据库密码 -->
source_dbpassword = source.password
<#-- 目的数据库密码 -->
target_dbpassword = target.password
<#-- 源表查询SQL -->
sourcetable_sql = ""
<#-- 标题 -->
ktr_name = ktrName
<#-- 表字段对象 -->
table_col_list = tableValue.tableColList
>
<?xml version="1.0" encoding="UTF-8"?>
<transformation>
    <info>
        <name>${ktr_name}</name>
        <description/>
        <extended_description/>
        <trans_version/>
        <trans_type>Normal</trans_type>
        <trans_status>0</trans_status>
        <directory>&#47;</directory>
        <parameters>
        </parameters>
        <log>
            <trans-log-table><connection/>
                <schema/>
                <table/>
                <size_limit_lines/>
                <interval/>
                <timeout_days/>
                <field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STATUS</id><enabled>Y</enabled><name>STATUS</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name><subject/></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name><subject/></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name><subject/></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name><subject/></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name><subject/></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name><subject/></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>STARTDATE</id><enabled>Y</enabled><name>STARTDATE</name></field><field><id>ENDDATE</id><enabled>Y</enabled><name>ENDDATE</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>DEPDATE</id><enabled>Y</enabled><name>DEPDATE</name></field><field><id>REPLAYDATE</id><enabled>Y</enabled><name>REPLAYDATE</name></field><field><id>LOG_FIELD</id><enabled>Y</enabled><name>LOG_FIELD</name></field></trans-log-table>
            <perf-log-table><connection/>
                <schema/>
                <table/>
                <interval/>
                <timeout_days/>
                <field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>SEQ_NR</id><enabled>Y</enabled><name>SEQ_NR</name></field><field><id>LOGDATE</id><enabled>Y</enabled><name>LOGDATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>INPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>INPUT_BUFFER_ROWS</name></field><field><id>OUTPUT_BUFFER_ROWS</id><enabled>Y</enabled><name>OUTPUT_BUFFER_ROWS</name></field></perf-log-table>
            <channel-log-table><connection/>
                <schema/>
                <table/>
                <timeout_days/>
                <field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>LOGGING_OBJECT_TYPE</id><enabled>Y</enabled><name>LOGGING_OBJECT_TYPE</name></field><field><id>OBJECT_NAME</id><enabled>Y</enabled><name>OBJECT_NAME</name></field><field><id>OBJECT_COPY</id><enabled>Y</enabled><name>OBJECT_COPY</name></field><field><id>REPOSITORY_DIRECTORY</id><enabled>Y</enabled><name>REPOSITORY_DIRECTORY</name></field><field><id>FILENAME</id><enabled>Y</enabled><name>FILENAME</name></field><field><id>OBJECT_ID</id><enabled>Y</enabled><name>OBJECT_ID</name></field><field><id>OBJECT_REVISION</id><enabled>Y</enabled><name>OBJECT_REVISION</name></field><field><id>PARENT_CHANNEL_ID</id><enabled>Y</enabled><name>PARENT_CHANNEL_ID</name></field><field><id>ROOT_CHANNEL_ID</id><enabled>Y</enabled><name>ROOT_CHANNEL_ID</name></field></channel-log-table>
            <step-log-table><connection/>
                <schema/>
                <table/>
                <timeout_days/>
                <field><id>ID_BATCH</id><enabled>Y</enabled><name>ID_BATCH</name></field><field><id>CHANNEL_ID</id><enabled>Y</enabled><name>CHANNEL_ID</name></field><field><id>LOG_DATE</id><enabled>Y</enabled><name>LOG_DATE</name></field><field><id>TRANSNAME</id><enabled>Y</enabled><name>TRANSNAME</name></field><field><id>STEPNAME</id><enabled>Y</enabled><name>STEPNAME</name></field><field><id>STEP_COPY</id><enabled>Y</enabled><name>STEP_COPY</name></field><field><id>LINES_READ</id><enabled>Y</enabled><name>LINES_READ</name></field><field><id>LINES_WRITTEN</id><enabled>Y</enabled><name>LINES_WRITTEN</name></field><field><id>LINES_UPDATED</id><enabled>Y</enabled><name>LINES_UPDATED</name></field><field><id>LINES_INPUT</id><enabled>Y</enabled><name>LINES_INPUT</name></field><field><id>LINES_OUTPUT</id><enabled>Y</enabled><name>LINES_OUTPUT</name></field><field><id>LINES_REJECTED</id><enabled>Y</enabled><name>LINES_REJECTED</name></field><field><id>ERRORS</id><enabled>Y</enabled><name>ERRORS</name></field><field><id>LOG_FIELD</id><enabled>N</enabled><name>LOG_FIELD</name></field></step-log-table>
        </log>
        <maxdate>
            <connection/>
            <table/>
            <field/>
            <offset>0.0</offset>
            <maxdiff>0.0</maxdiff>
        </maxdate>
        <size_rowset>10000</size_rowset>
        <sleep_time_empty>50</sleep_time_empty>
        <sleep_time_full>50</sleep_time_full>
        <unique_connections>N</unique_connections>
        <feedback_shown>Y</feedback_shown>
        <feedback_size>50000</feedback_size>
        <using_thread_priorities>Y</using_thread_priorities>
        <shared_objects_file/>
        <capture_step_performance>N</capture_step_performance>
        <step_performance_capturing_delay>1000</step_performance_capturing_delay>
        <step_performance_capturing_size_limit>100</step_performance_capturing_size_limit>
        <dependencies>
        </dependencies>
        <partitionschemas>
        </partitionschemas>
        <slaveservers>
        </slaveservers>
        <clusterschemas>
        </clusterschemas>
        <created_user>-</created_user>
        <created_date>${create_time?replace("/", "&#47;")}</created_date>
        <modified_user>-</modified_user>
        <modified_date>${create_time?replace("/", "&#47;")}</modified_date>
    </info>
    <notepads>
        <notepad>
            <note>读信息从表 [${source_tablename}] 位于数据库 [${source_dbconnname}]
然后, 写信息到表 [${target_tablename}] 位于数据库 [${target_dbconnname}]</note>
            <xloc>150</xloc>
            <yloc>10</yloc>
            <width>427</width>
            <heigth>49</heigth>
            <fontname>Ariel</fontname>
            <fontsize>10</fontsize>
            <fontbold>N</fontbold>
            <fontitalic>N</fontitalic>
            <fontcolorred>0</fontcolorred>
            <fontcolorgreen>0</fontcolorgreen>
            <fontcolorblue>0</fontcolorblue>
            <backgroundcolorred>255</backgroundcolorred>
            <backgroundcolorgreen>165</backgroundcolorgreen>
            <backgroundcolorblue>0</backgroundcolorblue>
            <bordercolorred>100</bordercolorred>
            <bordercolorgreen>100</bordercolorgreen>
            <bordercolorblue>100</bordercolorblue>
            <drawshadow>Y</drawshadow>
        </notepad>
    </notepads>
    <connection>
        <name>${source_dbconnname}</name>
        <server>${source_dbconnaddr}</server>
        <type>MYSQL</type>
        <access>Native</access>
        <database>${source_dbname}</database>
        <port>${source_dbport}</port>
        <username>${source_dbuser}</username>
        <password>${source_dbpassword}</password>
        <servername/>
        <data_tablespace/>
        <index_tablespace/>
        <attributes>
            <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
            <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
            <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
            <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
            <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
            <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
            <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
            <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
            <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
            <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
        </attributes>
    </connection>
    <connection>
        <name>${target_dbconnname}</name>
        <server>${target_dbconnaddr}</server>
        <type>MYSQL</type>
        <access>Native</access>
        <database>${target_dbname}</database>
        <port>${target_dbport}</port>
        <username>${target_dbuser}</username>
        <password>${target_dbpassword}</password>
        <servername/>
        <data_tablespace/>
        <index_tablespace/>
        <attributes>
            <attribute><code>EXTRA_OPTION_MYSQL.defaultFetchSize</code><attribute>500</attribute></attribute>
            <attribute><code>EXTRA_OPTION_MYSQL.useCursorFetch</code><attribute>true</attribute></attribute>
            <attribute><code>FORCE_IDENTIFIERS_TO_LOWERCASE</code><attribute>N</attribute></attribute>
            <attribute><code>FORCE_IDENTIFIERS_TO_UPPERCASE</code><attribute>N</attribute></attribute>
            <attribute><code>IS_CLUSTERED</code><attribute>N</attribute></attribute>
            <attribute><code>PORT_NUMBER</code><attribute>3306</attribute></attribute>
            <attribute><code>QUOTE_ALL_FIELDS</code><attribute>N</attribute></attribute>
            <attribute><code>STREAM_RESULTS</code><attribute>Y</attribute></attribute>
            <attribute><code>SUPPORTS_BOOLEAN_DATA_TYPE</code><attribute>N</attribute></attribute>
            <attribute><code>USE_POOLING</code><attribute>N</attribute></attribute>
        </attributes>
    </connection>
    <order>
        <hop> <from>从 [${source_tablename}]</from><to>同步到 [${target_tablename}]</to><enabled>Y</enabled> </hop>  </order>
    <step>
        <name>从 [${source_tablename}]</name>
        <type>TableInput</type>
        <description>读信息从表 [${source_tablename}] 位于数据库 [${source_dbconnname}]</description>
        <distribute>Y</distribute>
        <copies>1</copies>
        <partitioning>
            <method>none</method>
            <schema_name/>
        </partitioning>
        <connection>${source_dbconnname}</connection>
        <sql>SELECT
<#-- 构造select语句字段列 -->
<#list table_col_list as item>
<#if item_index == 0>
     ${item.columnName}
<#else>
    ,${item.columnName}
</#if>
</#list>
FROM ${source_tablename}
        </sql>
        <limit>0</limit>
        <lookup/>
        <execute_each_row>N</execute_each_row>
        <variables_active>N</variables_active>
        <lazy_conversion_active>N</lazy_conversion_active>
        <cluster_schema/>
        <remotesteps>   <input>   </input>   <output>   </output> </remotesteps>    <GUI>
        <xloc>150</xloc>
        <yloc>100</yloc>
        <draw>Y</draw>
    </GUI>
    </step>

    <step>
        <name>同步到 [${target_tablename}]</name>
        <type>InsertUpdate</type>
        <description/>
        <distribute>Y</distribute>
        <copies>1</copies>
        <partitioning>
            <method>none</method>
            <schema_name/>
        </partitioning>
        <connection>${target_dbconnname}</connection>
        <commit>100</commit>
        <update_bypassed>N</update_bypassed>
        <lookup>
            <schema/>
            <table>${target_tablename}</table>
            <#-- 循环主键字段 -->
            <#list table_col_list as item>
            <#if item.columnKey == "PRI">
            <key>
                <name>${item.columnName}</name>
                <field>${item.columnName}</field>
                <condition>=</condition>
                <name2/>
            </key>
            </#if>
            </#list>
            <#-- 循环更新字段 -->
            <#list table_col_list as item>
            <value>
                <name>${item.columnName}</name>
                <rename>${item.columnName}</rename>
                <update><#if item.columnKey == "PRI">N<#else>Y</#if></update>
            </value>
            </#list>
        </lookup>
        <cluster_schema/>
        <remotesteps>   <input>   </input>   <output>   </output> </remotesteps>    <GUI>
        <xloc>500</xloc>
        <yloc>100</yloc>
        <draw>Y</draw>
    </GUI>
    </step>

    <step_error_handling>
    </step_error_handling>
    <slave-step-copy-partition-distribution>
    </slave-step-copy-partition-distribution>
    <slave_transformation>N</slave_transformation>
</transformation>
